import { Controller, Get } from '@nestjs/common';
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
import { Admin } from '../../common/decorators/admin.decorator';
import { CommonService } from './common.service';

@ApiTags('系统统计（管理员）')
@Controller('api/admin/common')
export class CommonAdminController {
  constructor(private readonly commonService: CommonService) {}

  /**
   * 获取系统统计信息
   * 包括用户总数、文章总数、评论总数、点赞总数等
   * 需要管理员权限
   */
  @Admin()
  @Get('dashboard')
  @ApiOperation({
    summary: '获取系统统计信息',
    description: '管理员获取系统各项统计数据，包括用户总数、文章总数、评论总数、点赞总数等',
  })
  @ApiResponse({
    status: 200,
    description: '获取成功',
    schema: {
      example: {
        userStats: {
          total: 100,
          adminCount: 2,
          normalUserCount: 98,
        },
        articleStats: {
          total: 200,
          approvedCount: 180,
          pendingCount: 20,
        },
        commentCount: 500,
        likeCount: 1000,
        systemTime: '2024-01-01T00:00:00.000Z',
      },
    },
  })
  @ApiResponse({
    status: 403,
    description: '无管理员权限',
  })
  @ApiResponse({
    status: 401,
    description: '用户未登录',
  })
  async getSystemStats() {
    return this.commonService.getSystemStats();
  }

  /**
   * 获取系统状态信息
   * 包括CPU使用率、内存使用率、磁盘使用率和系统运行时间
   * 需要管理员权限
   */
  @Admin()
  @Get('system-status')
  @ApiOperation({
    summary: '获取系统状态信息',
    description: '管理员获取系统运行状态数据，包括CPU使用率、内存使用率、磁盘使用率和系统运行时间',
  })
  @ApiResponse({
    status: 200,
    description: '获取成功',
    schema: {
      example: {
        cpuUsage: 35,
        memoryUsage: 62,
        diskUsage: 48,
        uptime: '12天3小时'
      },
    },
  })
  @ApiResponse({
    status: 403,
    description: '无管理员权限',
  })
  @ApiResponse({
    status: 401,
    description: '用户未登录',
  })
  async getSystemStatus() {
    return this.commonService.getSystemStatus();
  }


  /**
   * 获取热门文章排行
   */
  @Admin()
  @Get('hot-articles')
  @ApiOperation({
    summary: '获取热门文章排行',
    description: '管理员获取热门文章排行',
  })
  @ApiResponse({
    status: 200,
    description: '获取成功',
    schema: {
      example: [
        {
          id: 1,
          title: 'NestJS 基础教程',
          viewCount: 1000,
          likeCount: 500,
        },
        // ... 更多文章
      ],
    },
  })
  @ApiResponse({
    status: 403,
    description: '无管理员权限',
  })
  @ApiResponse({
    status: 401,
    description: '用户未登录',
  })
  async getHotArticles() {
    return this.commonService.getHotArticles();
  }
}
